<!doctype html>
<html lang=ru id=faq>

<title>OpenBSD PF: Производительность</title>
<meta charset=utf-8>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="../../openbsd.css">
<link rel="canonical" href="https://www.openbsd.org/faq/pf/perf.html">

<h2 id=OpenBSD>
<a href="../../index.html">
<i>Open</i><b>BSD</b></a>
PF - Производительность
<small>
<a href="index.html">[FAQ PF - На главную]</a>
</small>
</h2>
<hr>

<h3>
«Какова максимальная пропускная способность PF?»<br>
«На сколько мощным должен быть процессор, чтобы PF мог справиться с
моим сетевым соединением?»
</h3>

На эти вопросы не так-то и просто ответить. Для домашнего подключения
самого обычного железа должно быть более чем достаточно. Для некоторых
специальных конфигураций вомзожно потребуется и более быстрая машина с
высокопроизводительными сетевыми картами.
PF используется на очень крупных системах с большим трафиком, а его
разработчики являются опытными пользователями PF. Скорее всего у вас
не возникнет никаких проблем.

<p>
Производительность PF определяется следующими факторами:

<ul>
  <li>Количество пакетов в секунду.
      Для пакета размером 1500 байт необходимо выполнить почти такой же
      объем работы, как для однобайтового пакета. Число пакетов в секунду
      определяет количество, которое таблица состояний и правила фильтрации
      должны ежесекундно использоваться, определяя дальнейшую судьбу пакета
      и загрузку системы соответственно.
  <li>Эффективность вашей сетевой карты. Некоторые сетевые карты просто более
      качественны и эффективны, чем другие. Старые сетевые карты
      <a href="https://man.openbsd.org/rl">rl(4)</a> имеют тенденцию быть
      менее хорошего качества нежели <a href="https://man.openbsd.org/ix">ix(4)</a>.
      Последние, как правило, работают очень хорошо.
  <li>Сложность вашего набора правил. Чем больше строк конфига необходимо
      обработать для каждого пакета, тем ниже производительность. Чем больше
      пакетов будет отфильтровано по быстрым правилам, тем выше будет производительность.
  <li>Едва ли стоит тут это упоминать: процессор и оперативную память.
      Поскольку PF - это процесс, выполняющийся в ядре, он не будет использовать
      swap пространство. Таким образом, если у вас достаточно RAM, он запускается,
      если нет, получите panic из-за исчерпания
      <a href="https://man.openbsd.org/pool">pool(9)</a>.
      Огромного количества оперативной памяти не требуется.
</ul>

<!-- XXXrelease change this soon... -->
<h3>Улучшится ли производительность PF на мультипроцессорных системах?</h3>

PF использует только один процессор, поэтому его запуск на системе с несколькими
процессорами (или несколькими ядрами) НЕ УЛУЧШАТ производительность PF.
Однако в некоторых случаях запуск SMP ядра OpenBSD (<code>bsd.mp</code>) вместо
обычного <code>bsd</code> даст лучшую производительность из-за различий в способах
обработки прерываний. Если вы заметите на своей системе проблемы с производительностью,
поэкспериментируйте с заменой ядра. Большинство пользователей вряд ли заметит разницу.
